Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

 << zurück
Visual C# 2005 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2005

Visual C# 2005
1.320 S., mit 2 CDs, 59,90 Euro
Galileo Computing
ISBN 3-89842-586-X
gp Kapitel 5 Das Klassendesign (Teil 2)
  gp 5.1 Statische Klassenkomponenten
    gp 5.1.1 Die Realisierung eines Objektzählers
    gp 5.1.2 Zugriff auf statische Komponenten
    gp 5.1.3 Statische Klassenvariable in der Klasse »Circle«
    gp 5.1.4 Klassenspezifische Methoden
    gp 5.1.5 Statische Methoden in der Klasse »Circle«
    gp 5.1.6 Statische Klasseninitialisierer
    gp 5.1.7 Statische Klassen
    gp 5.1.8 Zusammenfassung
  gp 5.2 Delegate – Methodenzeiger unter .NET
    gp 5.2.1 Einführung in das Prinzip der Delegate
    gp 5.2.2 Zusammenfassung der Arbeitsschritte
    gp 5.2.3 Vereinfachter Aufruf eines Delegaten
    gp 5.2.4 Anonyme Methoden
  gp 5.3 Ereignisse eines Objekts
    gp 5.3.1 Ergänzung eines Ereignisses in einer Ereignisquelle
    gp 5.3.2 Die Behandlung eines Ereignisses im Ereignisempfänger
    gp 5.3.3 Wenn der Ereignisempfänger ein Ereignis nicht behandelt
    gp 5.3.4 Ereignisse mit Übergabeparameter
    gp 5.3.5 Zusammenfassung
  gp 5.4 Strukturen – eine Sonderform der Klassen
    gp 5.4.1 Die Definition einer Struktur
    gp 5.4.2 Initialisieren einer Struktur
    gp 5.4.3 Weitere Merkmale einer Struktur
    gp 5.4.4 Verschachtelung von Strukturen
    gp 5.4.5 Änderung der Klasse »Circle«
    gp 5.4.6 Zusammenfassung
  gp 5.5 Enumerationen (Aufzählungen)
    gp 5.5.1 Wertzuweisung an enum-Mitglieder
    gp 5.5.2 Alle Mitglieder einer Aufzählung durchlaufen
  gp 5.6 Referenz- und Wertetypen
    gp 5.6.1 Typumwandlung mit Boxing
    gp 5.6.2 Die Unboxing-Konvertierung
    gp 5.6.3 Zusammenfassung
  gp 5.7 Namensräume (Namespaces)
    gp 5.7.1 Zugriff auf Namespaces
    gp 5.7.2 Die »using«-Direktive
    gp 5.7.3 Vermeiden von Mehrdeutigkeiten
    gp 5.7.4 Aufrufe mit dem »::«-Operator umleiten
    gp 5.7.5 Namespaces festlegen
    gp 5.7.6 Zusammenfassung


Galileo Computing

5.5 Enumerationen (Aufzählungendowntop

Eine Enumeration ist als Gruppierung mehrerer Konstanten zu verstehen, die zur Laufzeit nicht verändert werden können. Alle in der Enumeration enthaltenen Konstanten sind grundsätzlich vom gleichen Datentyp. Dabei kann es sich um byte, short, int oder long handeln, andere CLS-kompatible Datentypen sind nicht zugelassen. Die Angabe des Typs einer Enumeration ist optional. Wird er nicht angegeben, handelt es sich um int-Elemente. Enumerationen sind von der gemeinsamen Basisklasse System.Enum abgeleitet.

Betrachten Sie das folgende Beispiel der Enumeration Spielkarte:


public enum Spielkarte : long {
  Karo = 9,
  Herz = 10,
  Pik = 11,
  Kreuz = 12
}

Eine Enumeration wird mit dem Schlüsselwort enum eingeleitet. Hinter der Angabe des Bezeichners kann optional der Datentyp aller in der Enumeration enthaltenen Konstanten angegeben werden. Dabei wird der Datentyp, im Beispiel handelt es sich um den Typ long, mit einem Doppelpunkt vom Bezeichner der Aufzählung getrennt.

Der enum-Block enthält alle erforderlichen Konstanten, die durch ein Komma getrennt werden. Der von ihnen vertretene Wert kann optional zugewiesen werden, ansonsten wird er nach einem bestimmten Algorithmus automatisch vergeben, wie unten noch erläutert wird.

Die Definition einer Enumeration darf an denselben Stellen im Programmcode erfolgen wie die einer Struktur, also

gp  als eigenständiges Element in einer eigenen Quellcodedatei
gp  neben anderen Klassen-, Struktur- oder Enumerationsdefinitionen in derselben Quellcodedatei
gp  im Deklarationsabschnitt einer Klasse

Innerhalb einer Methode ist die Definition einer Enumeration unzulässig. Wird eine Enumeration außerhalb einer Klasse definiert, beschreiben die Zugriffsmodifizierer public und internal die Sichtbarkeit, innerhalb einer Klasse kommen noch private und protected hinzu.


Galileo Computing

5.5.1 Wertzuweisung an enum-Mitglieder  downtop

Die Wertzuweisung an die enum-Elemente ist optional. Wird darauf verzichtet, steht das erste Element für den Wert 0, der sich mit jedem Folgeelement um +1 erhöht. Die Konstantenwerte können auch negativ sein. Beachten Sie, dass der Wert als Basis für die Nummerierung aller Folgeelemente benutzt wird:


public enum TestEnum {
  a = –2,
  b,
  c
}

Da das erste Element (a) für den Konstantenwert –2 steht, hat das Folgeelement (b) den Wert –1 und für das letzte (c) schließlich 0. Bei der Angabe der Konstantenwerte muss keine Reihenfolge eingehalten werden. Es dürfen sogar mehrere Elemente gleiche Werte aufweisen.

Eine enum-Aufzählung wird von der Common Language Runtime wie ein Wertetyp behandelt. Daher ist eine Variablendeklaration notwendig, um Nutzen aus einer Enumeration zu ziehen:


Spielkarte myGame;

Die Variable myGame kann nun für ein beliebiges Element der Aufzählung stehen. Um welches es sich genau handelt, muss mit der Punktnotation angegeben werden:


myGame = Spielkarte.Herz;

Eine andere Variante ist, einer beliebigen ganzzahligen Variablen den Wert einer auf einem enum-Typ basierenden Variablen zuweisen:


Spielkarte myGame;
myGame = myGame.Karo;

myGame wird in diesem Fall den Inhalt »Karo« aufweisen. Wenn Sie am Zahlenwert, der dieser Konstanten zugeordnet ist, interessiert sind, müssen Sie explizit konvertieren:


long myGame = (long)Spielkarte.Karo;


Galileo Computing

5.5.2 Alle Mitglieder einer Aufzählung durchlaufen  toptop

Enumerationen werden uns im zweiten Teil dieses Buches, wenn wir uns der Programmierung von Windows-Anwendungen widmen, häufig begegnen. Dabei wird es manchmal sinnvoll sein, die Mitglieder einer Aufzählung in einer Schleife abzufangen. Ich möchte Ihnen am Beispiel der Aufzählung Spielkarte demonstrieren, wie das programmiertechnisch realisiert wird.


// --------------------------------------------------------------
// Beispiel: ...\Kapitel 5\Enumeration
// --------------------------------------------------------------
class Program {
  static void Main(string[] args) {
    foreach (Spielkarte karte in Enum.GetValues(typeof(Spielkarte)))
      Console.WriteLine(karte.ToString());
      Console.ReadLine();
    }
  }
  public enum Spielkarte : long {
    Karo = 9,
    Herz = 10,
    Pik = 11,
    Kreuz = 12
  }
}

Wir können in solchen Fällen nicht mit einer herkömmlichen for-Schleife operieren, sondern müssen dazu die foreach-Schleife benutzen, die ein Array elementweise durchläuft und deren allgemeine Syntax lautet:


foreach (Datentyp variable in Ausdruck) {...}

Zuerst wird eine Variable deklariert, deren Lebensdauer sich auf die Ausführung der Schleife beschränkt. Der Datentyp entspricht dem Datentyp der Konstanten in der Enumeration, deren Mitglieder wir in Erfahrung bringen wollen. Ausdruck ist das Array, das in der Schleife elementweise durchlaufen wird. Dieses Array müssen wir uns noch besorgen.

Eingangs wurde bereits erwähnt, dass alle Enumerationen aus der Klasse Enum abgeleitet werden. Diese stellt mit GetValues eine statische Methode zur Verfügung, die uns eine Array-Referenz aller in der Aufzählung enthaltenen Konstanten zurückliefert. GetValues ist wie folgt definiert:


public static Array GetValues(Type enumType);

Der Rückgabewert ist vom Typ Array, das Übergabeargument vom Typ Type. Dieser Typ liefert Informationen über einen Datentyp, beispielsweise über die von einer Klasse veröffentlichten Methoden und Felder. Dazu müssen wir uns nur den beschreibenden Type eines bestimmten Datentyps besorgen. Hier hilft die C#-spezifische Funktion typeof weiter, der wir als Argument den Typbezeichner übergeben. Der Ausdruck


Enum.GetValues(typeof(Spielkarte)))

liefert die Elemente der Enumeration als Array, das wir mit karte vom ersten bis zum letzten Element durchlaufen. Bei jedem Schleifendurchlauf zeigt karte auf eine andere Konstante, deren Namen wir an der Konsole ausgeben lassen.

 << zurück
  
  Zum Katalog
Zum Katalog: Visual C# 2005
Visual C# 2005
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2005






 Fortgeschrittene
 Programmierung
 mit Visual C# 2005


Zum Katalog: Einstieg in Visual C# 2005






 Einstieg in
 Visual C# 2005


Zum Katalog: Einstieg in Visual Basic 2005






 Einstieg in
 Visual Basic 2005


Zum Katalog: Visual Basic 2005






 Visual Basic 2005


Zum Katalog: Java ist auch eine Insel






 Java ist auch eine
 Insel


Zum Katalog: Konzepte und Lösungen für Microsoft-Netzwerke






 Konzepte und
 Lösungen für
 Microsoft-Netzwerke


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de